package solutionsdemo;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 黎鹤舞
 * Date: 2024-01-25
 * Time: 22:54
 */

/**
 * 给你两棵二叉树的根节点 p 和 q ，编写一个函数来检验这两棵树是否相同。
 * 如果两个树在结构上相同，并且节点具有相同的值，则认为它们是相同的。
 * 1.结构不同   2.数值不同
 */
public class Solution {

    //以根节点为例子:
    //1.一个根为空，另一个根不为空 不相同
    //2.两个根均为空 相同
    //3.两个根均不为空  则判断其值是否相同
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if( (p == null && q != null )|| (p != null && q == null)) {
            return false;
        }
        if(p == null && q == null) {
            return true;
        }
        //走到这里，证明此时根树结构相同
        if(p.val != q.val) {
            return false;
        }

        //走到这里，说明根节点判断相同，开始判断左右子树
        return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
    }
}
